home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet multimedia / Muzyka / Edytory sampli (probek dzwieku) / ZynAddSubFX_2.2.0 / Setup_ZynAddSubFX-2.2.0.exe / source code / UI / PartUI.fl < prev    next >
Text File  |  2005-03-14  |  38KB  |  1,087 lines

  1. # data file for the Fltk User Interface Designer (fluid)
  2. version 1.0104 
  3. header_name {.h} 
  4. code_name {.cc}
  5. decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
  6.  
  7. decl {//License: GNU GPL version 2} {} 
  8.  
  9. decl {\#include <stdlib.h>} {public
  10.  
  11. decl {\#include <stdio.h>} {public
  12.  
  13. decl {\#include <string.h>} {public
  14.  
  15. decl {\#include "WidgetPDial.h"} {public
  16.  
  17. decl {\#include "EffUI.h"} {public
  18.  
  19. decl {\#include "BankUI.h"} {public
  20.  
  21. decl {\#include "ADnoteUI.h"} {public
  22.  
  23. decl {\#include "SUBnoteUI.h"} {public
  24.  
  25. decl {\#include "PADnoteUI.h"} {public
  26.  
  27. decl {\#include "../Misc/Config.h"} {public
  28.  
  29. decl {\#include "../Misc/Master.h"} {public
  30.  
  31. decl {\#include "../Misc/Part.h"} {public
  32.  
  33. class PartSysEffSend {: {public Fl_Group}
  34. } {
  35.   Function {make_window()} {private
  36.   } {
  37.     Fl_Window syseffsend {
  38.       private xywh {584 83 90 35} type Double hide
  39.       class Fl_Group
  40.     } {
  41.       Fl_Dial {} {
  42.         label 01
  43.         callback {master->setPsysefxvol(npart,neff,(int) o->value());}
  44.         xywh {0 0 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 align 130 maximum 127 step 1
  45.         code0 {o->size(25,25);}
  46.         code1 {o->value(master->Psysefxvol[neff][npart]);}
  47.         code2 {char tmp[10];snprintf(tmp,10,"%d",neff);o->label(strdup(tmp));}
  48.         class WidgetPDial
  49.       }
  50.     }
  51.   }
  52.   Function {PartSysEffSend(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
  53.     code {master=NULL;
  54. neff=0;
  55. npart=0;} {}
  56.   }
  57.   Function {init(Master *master_,int npart_,int neff_)} {} {
  58.     code {npart=npart_;
  59. neff=neff_;
  60. master=master_;
  61. make_window();
  62. syseffsend->show();
  63. end();} {}
  64.   }
  65.   Function {~PartSysEffSend()} {} {
  66.     code {syseffsend->hide();
  67. //delete(syseffsend);} {}
  68.   }
  69.   decl {Master *master;} {}
  70.   decl {int neff;} {}
  71.   decl {int npart;} {}
  72.  
  73. class PartUI_ {} {
  74.   Function {showparameters(int kititem,int engine)} {return_type virtual
  75.   } {}
  76.  
  77. class PartKitItem {: {public Fl_Group}
  78. } {
  79.   Function {make_window()} {private
  80.   } {
  81.     Fl_Window partkititem {
  82.       private xywh {113 271 670 30} type Double hide
  83.       class Fl_Group
  84.     } {
  85.       Fl_Group partkititemgroup {
  86.         private xywh {55 0 605 20} box FLAT_BOX
  87.         code0 {if (part->kit[n].Penabled==0) o->deactivate();}
  88.       } {
  89.         Fl_Counter minkcounter {
  90.           callback {part->kit[n].Pminkey=(int)o->value();}
  91.           xywh {225 0 55 15} type Simple minimum 0 maximum 128 step 1
  92.           code0 {o->value(part->kit[n].Pminkey);}
  93.         }
  94.         Fl_Button {} {
  95.           label m
  96.           callback {if (part->lastnote>=0) minkcounter->value(part->lastnote);
  97. minkcounter->do_callback();
  98. maxkcounter->do_callback();}
  99.           tooltip {set the minimum key to the last pressed key} xywh {285 3 15 12} box THIN_UP_BOX labelsize 10
  100.         }
  101.         Fl_Button {} {
  102.           label M
  103.           callback {if (part->lastnote>=0) maxkcounter->value(part->lastnote);
  104. maxkcounter->do_callback();
  105. minkcounter->do_callback();}
  106.           tooltip {set the maximum key to the last pressed key} xywh {315 3 15 12} box THIN_UP_BOX labelsize 10
  107.         }
  108.         Fl_Button {} {
  109.           label R
  110.           callback {minkcounter->value(0);
  111. minkcounter->do_callback();
  112. maxkcounter->value(127);
  113. maxkcounter->do_callback();}
  114.           tooltip {reset the minimum key to 0 and maximum key to 127} xywh {300 3 15 12} box THIN_UP_BOX labelfont 1 labelsize 10
  115.         }
  116.         Fl_Button adeditbutton {
  117.           label edit
  118.           callback {partui->showparameters(n,0);}
  119.           xywh {420 0 40 15} box THIN_UP_BOX labelsize 12
  120.           code0 {if (part->kit[n].Padenabled==0) o->deactivate();}
  121.           code1 {if (n==0) o->hide();}
  122.         }
  123.         Fl_Button subeditbutton {
  124.           label edit
  125.           callback {partui->showparameters(n,1);}
  126.           xywh {490 0 40 15} box THIN_UP_BOX labelsize 12
  127.           code0 {if (part->kit[n].Psubenabled==0) o->deactivate();}
  128.           code1 {if (n==0) o->hide();}
  129.         }
  130.         Fl_Check_Button mutedcheck {
  131.           callback {part->kit[n].Pmuted=(int)o->value();}
  132.           private xywh {60 0 20 15} down_box DOWN_BOX labelfont 1 labelsize 12 align 4
  133.           code0 {o->value(part->kit[n].Pmuted);}
  134.         }
  135.         Fl_Counter maxkcounter {
  136.           callback {part->kit[n].Pmaxkey=(int)o->value();}
  137.           xywh {335 0 55 15} type Simple minimum 0 maximum 128 step 1
  138.           code0 {o->value(part->kit[n].Pmaxkey);}
  139.         }
  140.         Fl_Button labelbutton {
  141.           label {Bass Drum}
  142.           callback {const char *tmp=fl_input("Kit item name:",(const char *)part->kit[n].Pname);
  143. if (tmp!=NULL) snprintf((char *)part->kit[n].Pname,PART_MAX_NAME_LEN,"%s",tmp);}
  144.           xywh {90 0 130 15} box THIN_DOWN_BOX down_box FLAT_BOX labelfont 1 labelsize 11 align 20
  145.           code0 {o->label((char *)part->kit[n].Pname);}
  146.         }
  147.         Fl_Check_Button adcheck {
  148.           callback {part->kit[n].Padenabled=(int)o->value();
  149. if (part->kit[n].Padenabled!=0) adeditbutton->activate();
  150.        else  adeditbutton->deactivate();}
  151.           private xywh {400 0 20 15} down_box DOWN_BOX labelfont 1 labelsize 12 align 4
  152.           code0 {o->value(part->kit[n].Padenabled);}
  153.           code1 {if (n==0) o->hide();}
  154.         }
  155.         Fl_Check_Button subcheck {
  156.           callback {part->kit[n].Psubenabled=(int)o->value();
  157. if (part->kit[n].Psubenabled!=0) subeditbutton->activate();
  158.        else  subeditbutton->deactivate();}
  159.           private xywh {470 0 20 15} down_box DOWN_BOX labelfont 1 labelsize 12 align 4
  160.           code0 {o->value(part->kit[n].Psubenabled);}
  161.           code1 {if (n==0) o->hide();}
  162.         }
  163.         Fl_Choice sendtoeffect {
  164.           callback {if (o->value()!=0) part->kit[n].Psendtoparteffect=(int)o->value()-1;
  165.     else part->kit[n].Psendtoparteffect=127;} open
  166.           xywh {615 0 45 15} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
  167.           code0 {o->add("OFF");char nrstr[10]; for(int i=0;i<NUM_PART_EFX;i++){sprintf(nrstr,"FX%d",i+1);o->add(nrstr);};}
  168.           code1 {o->value(part->kit[n].Psendtoparteffect+1);if (part->kit[n].Psendtoparteffect==127) o->value(0);}
  169.         } {}
  170.         Fl_Button padeditbutton {
  171.           label edit
  172.           callback {partui->showparameters(n,2);}
  173.           xywh {560 0 40 15} box THIN_UP_BOX labelsize 12
  174.           code0 {if (part->kit[n].Ppadenabled==0) o->deactivate();}
  175.           code1 {if (n==0) o->hide();}
  176.         }
  177.         Fl_Check_Button padcheck {
  178.           callback {part->kit[n].Ppadenabled=(int)o->value();
  179. if (part->kit[n].Ppadenabled!=0) padeditbutton->activate();
  180.        else padeditbutton->deactivate();}
  181.           private xywh {540 0 20 15} down_box DOWN_BOX labelfont 1 labelsize 12 align 4
  182.           code0 {o->value(part->kit[n].Ppadenabled);}
  183.           code1 {if (n==0) o->hide();}
  184.         }
  185.       }
  186.       Fl_Check_Button enabledcheck {
  187.         label 01
  188.         callback {int answer=1;
  189. if (o->value()==0) answer=fl_ask("Delete the item?");
  190. if (answer!=0){
  191. pthread_mutex_lock(&master->mutex);
  192.  part->setkititemstatus(n,(int) o->value());
  193. pthread_mutex_unlock(&master->mutex);
  194.  
  195. if (o->value()==0) partkititemgroup->deactivate();
  196. else partkititemgroup->activate();
  197. o->redraw();
  198. partui->showparameters(n,-1);//use to delete the ui, if it is not to item 0
  199. } else o->value(1);}
  200.         private xywh {30 0 20 15} down_box DOWN_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 4
  201.         code0 {snprintf(label,10,"%d",n+1);o->label(strdup(label));}
  202.         code1 {o->value(part->kit[n].Penabled);}
  203.         code2 {if (n==0) o->deactivate();}
  204.       }
  205.     }
  206.   }
  207.   Function {PartKitItem(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
  208.     code {n=0;
  209. part=NULL;} {}
  210.   }
  211.   Function {refresh()} {} {
  212.     code {enabledcheck->value(part->kit[n].Penabled);
  213. if (part->kit[n].Penabled==0) partkititemgroup->deactivate();
  214. else partkititemgroup->activate();
  215.  
  216. mutedcheck->value(part->kit[n].Pmuted);
  217. labelbutton->label((char *)part->kit[n].Pname);
  218. minkcounter->value(part->kit[n].Pminkey);
  219. maxkcounter->value(part->kit[n].Pmaxkey);
  220. adcheck->value(part->kit[n].Padenabled);
  221. adcheck->do_callback();
  222. subcheck->value(part->kit[n].Psubenabled);
  223. subcheck->do_callback();
  224.  
  225. sendtoeffect->value(part->kit[n].Psendtoparteffect+1);
  226. if (part->kit[n].Psendtoparteffect==127) sendtoeffect->value(0);
  227.  
  228. this->redraw();} {
  229.       callback {int answer=1;
  230. if (o->value()==0) answer=fl_ask("Delete the item?");
  231. if (answer!=0){
  232. pthread_mutex_lock(&master->mutex);
  233.  part->setkititemstatus(n,(int) o->value());
  234. pthread_mutex_unlock(&master->mutex);
  235.  
  236. if (o->value()==0) partkititemgroup->deactivate();
  237. else partkititemgroup->activate();
  238. o->redraw();
  239. partui->showparameters(n,-1);//use to delete the ui, if it is not to item 0
  240. } else o->value(1);}
  241.     }
  242.   }
  243.   Function {init(Part *part_,int n_,Master *master_,PartUI_ *partui_)} {} {
  244.     code {part=part_;
  245. n=n_;
  246. partui=partui_;
  247. master=master_;
  248. make_window();
  249. //partkititem->show();
  250. end();} {}
  251.   }
  252.   Function {~PartKitItem()} {} {
  253.     code {partkititem->hide();
  254. //delete(partkititem);} {}
  255.   }
  256.   decl {Part *part;} {}
  257.   decl {int n;} {}
  258.   decl {Master *master;} {}
  259.   decl {char label[10];} {}
  260.   decl {PartUI_ *partui;} {}
  261.  
  262. class PartUI {: {public Fl_Group,PartUI_}
  263. } {
  264.   Function {make_window()} {private
  265.   } {
  266.     Fl_Window partgroup {
  267.       private xywh {107 533 385 180} type Double hide
  268.       class Fl_Group
  269.     } {
  270.       Fl_Group partgroupui {
  271.         xywh {0 0 385 180}
  272.         code0 {if (part->Penabled==0) o->deactivate();}
  273.       } {
  274.         Fl_Dial {} {
  275.           label Pan
  276.           callback {part->setPpanning((int) o->value());}
  277.           xywh {50 40 25 25} box ROUND_UP_BOX labelsize 12 maximum 127 step 1
  278.           code0 {o->value(part->Ppanning);}
  279.           class WidgetPDial
  280.         }
  281.         Fl_Counter {} {
  282.           label KeyShift
  283.           callback {part->Pkeyshift=(int) o->value()+64;}
  284.           xywh {195 45 90 20} labelsize 12 align 1 minimum -64 maximum 64 step 1
  285.           code0 {o->lstep(12);}
  286.           code1 {o->value(part->Pkeyshift-64);}
  287.         }
  288.         Fl_Scroll {} {open
  289.           xywh {166 91 125 60} box ENGRAVED_FRAME labelfont 1 labelsize 10 align 21
  290.         } {
  291.           Fl_Pack {} {open
  292.             xywh {171 96 115 35} type HORIZONTAL
  293.             code0 {o->spacing(5);}
  294.             code1 {for (int i=0;i<NUM_SYS_EFX;i++){psyef[i]=new PartSysEffSend(0,0,25,35,"");psyef[i]->init(master,npart,i);}}
  295.           } {}
  296.         }
  297.         Fl_Button {} {
  298.           label {Grand Piano}
  299.           callback {int event=Fl::event_button();
  300. if (event==FL_RIGHT_MOUSE){
  301.    const char *tmp=fl_input("Instrument name:",(const char *)part->Pname);
  302.    if (tmp!=NULL) snprintf((char *)part->Pname,PART_MAX_NAME_LEN,"%s",tmp);
  303. } else {
  304.   if (event==FL_LEFT_MOUSE) bankui->show();
  305.        else instrumenteditwindow->show();
  306. };} selected
  307.           tooltip {left mousebutton - to choose/save/.. from/to bank or right mousebutton to change the name or middle button to change the instrument information} xywh {195 5 185 20} box THIN_DOWN_BOX down_box FLAT_BOX labelfont 1 labelsize 12 align 84
  308.           code0 {o->label((char *)part->Pname);}
  309.         }
  310.         Fl_Box {} {
  311.           label {To Sys.Efx.}
  312.           xywh {166 81 95 10} labelfont 1 labelsize 10
  313.         }
  314.         Fl_Check_Button {} {
  315.           label NoteOn
  316.           callback {part->Pnoteon=(int) o->value();}
  317.           tooltip {set if the part receives NoteOn messages} xywh {0 155 65 20} down_box DOWN_BOX labelfont 1 labelsize 12
  318.           code0 {o->value(part->Pnoteon);}
  319.         }
  320.         Fl_Counter minkcounter {
  321.           label {Min.k}
  322.           callback {part->Pminkey=(int) o->value();
  323. if (part->Pminkey>part->Pmaxkey) o->textcolor(FL_RED);
  324.  else o->textcolor(FL_BLACK);}
  325.           tooltip {Minimum key (that the part receives NoteOn messages)} xywh {295 125 40 15} type Simple labelfont 1 labelsize 10 minimum 0 maximum 127 step 1 textsize 10
  326.           code0 {o->value(part->Pminkey);}
  327.         }
  328.         Fl_Counter maxkcounter {
  329.           label {Max.k}
  330.           callback {part->Pmaxkey=(int) o->value();
  331.  
  332. if (part->Pminkey>part->Pmaxkey) o->textcolor(FL_RED);
  333.  else o->textcolor(FL_BLACK);}
  334.           tooltip {Maximum key (that the part receives NoteOn messages)} xywh {340 125 40 15} type Simple labelfont 1 labelsize 10 minimum 0 maximum 127 step 1 textsize 10
  335.           code0 {o->value(part->Pmaxkey);}
  336.         }
  337.         Fl_Dial {} {
  338.           label Volume
  339.           callback {part->setPvolume((int) o->value());}
  340.           tooltip {Part Volume} xywh {10 35 30 30} box ROUND_UP_BOX labelsize 12 maximum 127 step 1
  341.           code0 {o->value(part->Pvolume);}
  342.           class WidgetPDial
  343.         }
  344.         Fl_Dial {} {
  345.           label {Vel.Ofs.}
  346.           callback {part->Pveloffs=(int) o->value();}
  347.           tooltip {Velocity Offset} xywh {135 40 25 25} box ROUND_UP_BOX labelsize 10 maximum 127 step 1
  348.           code0 {o->value(part->Pveloffs);}
  349.           class WidgetPDial
  350.         }
  351.         Fl_Dial {} {
  352.           label {Vel.Sns.}
  353.           callback {part->Pvelsns=(int) o->value();}
  354.           tooltip {Velocity Sensing Function} xywh {95 40 25 25} box ROUND_UP_BOX labelsize 10 maximum 127 step 1
  355.           code0 {o->value(part->Pvelsns);}
  356.           class WidgetPDial
  357.         }
  358.         Fl_Button {} {
  359.           label Controllers
  360.           callback {ctlwindow->show();}
  361.           xywh {295 90 85 30} box PLASTIC_UP_BOX labelfont 1 labelsize 12
  362.         }
  363.         Fl_Check_Button {} {
  364.           label Poly
  365.           callback {part->Ppolymode=(int) o->value();}
  366.           tooltip {Part mode (mono/poly)} xywh {65 155 45 20} down_box DOWN_BOX labelfont 1 labelsize 12
  367.           code0 {o->value(part->Ppolymode);}
  368.         }
  369.         Fl_Check_Button {} {
  370.           label Portamento
  371.           callback {part->ctl.portamento.portamento=(int) o->value();}
  372.           tooltip {Enable/Disable the portamento} xywh {115 155 85 20} down_box DOWN_BOX labelfont 1 labelsize 12
  373.           code0 {o->value(part->ctl.portamento.portamento);}
  374.         }
  375.         Fl_Button {} {
  376.           label {Edit instrument}
  377.           callback {instrumenteditwindow->show();}
  378.           xywh {15 105 130 30} box PLASTIC_UP_BOX color 230 labelfont 1 labelsize 17
  379.         }
  380.         Fl_Button {} {
  381.           label m
  382.           callback {if (part->lastnote>=0) minkcounter->value(part->lastnote);
  383. minkcounter->do_callback();
  384. maxkcounter->do_callback();}
  385.           tooltip {set the minimum key to the last pressed key} xywh {315 155 15 12} box THIN_UP_BOX labelsize 10
  386.         }
  387.         Fl_Button {} {
  388.           label M
  389.           callback {if (part->lastnote>=0) maxkcounter->value(part->lastnote);
  390. maxkcounter->do_callback();
  391. minkcounter->do_callback();}
  392.           tooltip {set the maximum key to the last pressed key} xywh {345 155 15 12} box THIN_UP_BOX labelsize 10
  393.         }
  394.         Fl_Button {} {
  395.           label R
  396.           callback {minkcounter->value(0);
  397. minkcounter->do_callback();
  398. maxkcounter->value(127);
  399. maxkcounter->do_callback();}
  400.           tooltip {reset the minimum key to 0 and maximum key to 127} xywh {330 155 15 12} box THIN_UP_BOX labelfont 1 labelsize 10
  401.         }
  402.         Fl_Choice {} {
  403.           label {MIDI Chn.Rcv.}
  404.           callback {part->Prcvchn=(int) o->value();} open
  405.           tooltip {receive from Midi channel} xywh {310 45 70 20} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
  406.           code0 {char nrstr[10]; for(int i=0;i<NUM_MIDI_CHANNELS;i++){sprintf(nrstr,"Chn%d",i+1);if (i!=9) o->add(nrstr); else o->add("Drms10");};}
  407.           code1 {o->value(part->Prcvchn);}
  408.         } {}
  409.         Fl_Choice keylimitlist {
  410.           label KLmt
  411.           callback {int val=0;
  412. val=atoi(o->text());
  413. part->setkeylimit(val);} open
  414.           tooltip {Key Limit} xywh {210 155 50 20} down_box BORDER_BOX labelsize 10 align 8 textfont 1 textsize 10
  415.         } {}
  416.       }
  417.       Fl_Check_Button {} {
  418.         label Enabled
  419.         callback {pthread_mutex_lock(&master->mutex);
  420. master->partonoff(npart,(int) o->value());
  421. pthread_mutex_unlock(&master->mutex);
  422. if (part->Penabled==0) partgroupui->deactivate();
  423.     else partgroupui->activate();}
  424.         xywh {90 5 75 20} down_box DOWN_BOX labelfont 1 labelsize 12
  425.         code0 {o->value(part->Penabled);}
  426.       }
  427.     }
  428.     Fl_Window ctlwindow {
  429.       label Controllers
  430.       private xywh {198 472 460 130} type Double hide
  431.     } {
  432.       Fl_Check_Button {} {
  433.         label Expr
  434.         callback {part->ctl.expression.receive=(int) o->value();}
  435.         tooltip {Expression enable} xywh {155 55 45 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
  436.         code0 {o->value(part->ctl.expression.receive);}
  437.       }
  438.       Fl_Dial {} {
  439.         label PanDpth
  440.         callback {part->ctl.panning.depth=(int) o->value();}
  441.         tooltip {Panning Depth} xywh {10 55 30 30} labelsize 10 maximum 127 step 1
  442.         code0 {o->value(part->ctl.panning.depth);}
  443.         class WidgetPDial
  444.       }
  445.       Fl_Dial {} {
  446.         label FltCut
  447.         callback {part->ctl.filtercutoff.depth=(int) o->value();}
  448.         tooltip {Filter Cutoff depth} xywh {90 55 30 30} labelsize 10 maximum 127 step 1
  449.         code0 {o->value(part->ctl.filtercutoff.depth);}
  450.         class WidgetPDial
  451.       }
  452.       Fl_Dial {} {
  453.         label FltQ
  454.         callback {part->ctl.filterq.depth=(int) o->value();}
  455.         tooltip {Filter Q depth} xywh {50 55 30 30} labelsize 10 maximum 127 step 1
  456.         code0 {o->value(part->ctl.filterq.depth);}
  457.         class WidgetPDial
  458.       }
  459.       Fl_Dial {} {
  460.         label BwDpth
  461.         callback {part->ctl.bandwidth.depth=(int) o->value();}
  462.         tooltip {BandWidth depth} xywh {125 10 30 30} labelsize 10 maximum 127 step 1
  463.         code0 {o->value(part->ctl.bandwidth.depth);}
  464.         class WidgetPDial
  465.       }
  466.       Fl_Dial {} {
  467.         label ModWh
  468.         callback {part->ctl.modwheel.depth=(int) o->value();}
  469.         tooltip {Modulation Wheel depth} xywh {50 10 30 30} labelsize 10 maximum 127 step 1
  470.         code0 {o->value(part->ctl.modwheel.depth);}
  471.         class WidgetPDial
  472.       }
  473.       Fl_Counter {} {
  474.         label {PWheelB.Rng (cents)}
  475.         callback {part->ctl.pitchwheel.bendrange=(int) o->value();}
  476.         tooltip {Pitch Wheel Bend Range (cents)} xywh {165 15 110 20} labelsize 10 align 1 minimum -6400 maximum 6400 step 1
  477.         code0 {o->value(part->ctl.pitchwheel.bendrange);}
  478.         code1 {o->lstep(100);}
  479.       }
  480.       Fl_Check_Button {} {
  481.         label FMamp
  482.         callback {part->ctl.fmamp.receive=(int) o->value();}
  483.         tooltip {FM amplitude enable} xywh {205 55 60 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
  484.         code0 {o->value(part->ctl.fmamp.receive);}
  485.       }
  486.       Fl_Check_Button {} {
  487.         label Vol
  488.         callback {part->ctl.volume.receive=(int) o->value();}
  489.         tooltip {Volume enable} xywh {155 80 45 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
  490.         code0 {o->value(part->ctl.volume.receive);}
  491.       }
  492.       Fl_Check_Button {} {
  493.         label Sustain
  494.         callback {part->ctl.sustain.receive=(int) o->value();
  495. if (part->ctl.sustain.receive==0) {
  496.   part->RelaseSustainedKeys();
  497.   part->ctl.setsustain(0);
  498. };}
  499.         tooltip {Sustain pedal enable} xywh {205 80 60 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
  500.         code0 {o->value(part->ctl.sustain.receive);}
  501.       }
  502.       Fl_Button {} {
  503.         label Close
  504.         callback {ctlwindow->hide();}
  505.         xywh {330 105 95 20} box THIN_UP_BOX
  506.       }
  507.       Fl_Button {} {
  508.         label {Reset all controllers}
  509.         callback {part->SetController(C_resetallcontrollers,0);}
  510.         xywh {5 105 210 20} box THIN_UP_BOX
  511.       }
  512.       Fl_Group {} {
  513.         label Portamento open
  514.         xywh {280 15 120 85} box ENGRAVED_FRAME labelfont 1 labelsize 10
  515.       } {
  516.         Fl_Check_Button {} {
  517.           label Rcv
  518.           callback {part->ctl.portamento.receive=(int) o->value();}
  519.           tooltip {Receive Portamento Controllers} xywh {285 20 40 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
  520.           code0 {o->value(part->ctl.portamento.receive);}
  521.         }
  522.         Fl_Dial {} {
  523.           label time
  524.           callback {part->ctl.portamento.time=(int) o->value();}
  525.           tooltip {Portamento time} xywh {285 60 25 25} labelsize 10 maximum 127 step 1
  526.           code0 {o->value(part->ctl.portamento.time);}
  527.           class WidgetPDial
  528.         }
  529.         Fl_Counter {} {
  530.           label thresh
  531.           callback {part->ctl.portamento.pitchthresh=(int) o->value();}
  532.           tooltip {Minimum or max. difference of the notes in order to do the portamento (x 100 cents)} xywh {340 20 50 20} type Simple labelsize 10 minimum 0 maximum 127 step 1
  533.           code0 {o->value(part->ctl.portamento.pitchthresh);}
  534.         }
  535.         Fl_Check_Button {} {
  536.           label {th.type}
  537.           callback {part->ctl.portamento.pitchthreshtype=(int) o->value();}
  538.           tooltip {Threshold type (min/max)} xywh {370 70 15 15} down_box DOWN_BOX labelsize 10 align 2
  539.           code0 {o->value(part->ctl.portamento.pitchthreshtype);}
  540.         }
  541.         Fl_Box {} {
  542.           label {x100 cnt.}
  543.           xywh {340 50 55 15} labelsize 10 align 16
  544.         }
  545.         Fl_Dial {} {
  546.           label {t.dn/up}
  547.           callback {int x=(int) o->value();
  548.  
  549. part->ctl.portamento.updowntimestretch=x;}
  550.           tooltip {Portamento time stretch (up/down)} xywh {315 60 25 25} labelsize 10 maximum 127 step 1
  551.           code0 {o->value(part->ctl.portamento.updowntimestretch);}
  552.           class WidgetPDial
  553.         }
  554.       }
  555.       Fl_Group {} {
  556.         label Resonance open
  557.         xywh {400 15 45 85} box ENGRAVED_BOX labelfont 1 labelsize 10
  558.       } {
  559.         Fl_Dial {} {
  560.           label BWdpth
  561.           callback {part->ctl.resonancebandwidth.depth=(int) o->value();}
  562.           tooltip {BandWidth controller depth} xywh {410 60 25 25} labelsize 10 maximum 127 step 1
  563.           code0 {o->value(part->ctl.resonancebandwidth.depth);}
  564.           class WidgetPDial
  565.         }
  566.         Fl_Dial {} {
  567.           label CFdpth
  568.           callback {part->ctl.resonancecenter.depth=(int) o->value();}
  569.           tooltip {Center Frequency controller Depth} xywh {410 20 25 25} labelsize 10 maximum 127 step 1
  570.           code0 {o->value(part->ctl.resonancecenter.depth);}
  571.           class WidgetPDial
  572.         }
  573.       }
  574.       Fl_Check_Button {} {
  575.         label {Exp MWh}
  576.         callback {part->ctl.modwheel.exponential=(int) o->value();}
  577.         tooltip {Exponential modulation wheel} xywh {10 15 40 25} down_box DOWN_BOX labelsize 10 align 148
  578.         code0 {o->value(part->ctl.modwheel.exponential);}
  579.       }
  580.       Fl_Check_Button {} {
  581.         label {Exp BW}
  582.         callback {part->ctl.bandwidth.exponential=(int) o->value();}
  583.         tooltip {Exponential BandWidth Controller} xywh {85 15 35 25} down_box DOWN_BOX labelsize 10 align 148
  584.         code0 {o->value(part->ctl.bandwidth.exponential);}
  585.       }
  586.     }
  587.     Fl_Window partfx {
  588.       label {Part's Insert Effects}
  589.       private xywh {121 424 390 145} type Double hide
  590.     } {
  591.       Fl_Counter inseffnocounter {
  592.         label {FX No.}
  593.         callback {ninseff=(int) o->value()-1;
  594. insefftype->value(part->partefx[ninseff]->geteffect());
  595. //insefftype->do_callback();
  596. inseffectui->refresh(part->partefx[ninseff]);
  597. int x=part->Pefxroute[ninseff];
  598. if (x==127) x=1;
  599. bypasseff->value(part->Pefxbypass[ninseff]);
  600.  
  601. sendtochoice->value(x);}
  602.         xywh {5 110 80 20} type Simple labelfont 1 align 6 minimum 1 maximum 127 step 1 textfont 1
  603.         code0 {o->bounds(1,NUM_PART_EFX);}
  604.         code1 {o->value(ninseff+1);}
  605.       }
  606.       Fl_Choice insefftype {
  607.         label EffType
  608.         callback {pthread_mutex_lock(part->mutex);
  609. part->partefx[ninseff]->changeeffect((int) o->value());
  610. pthread_mutex_unlock(part->mutex);
  611. inseffectui->refresh(part->partefx[ninseff]);}
  612.         xywh {155 110 70 15} down_box BORDER_BOX labelsize 11 align 6
  613.         code0 {o->value(part->partefx[ninseff]->geteffect());}
  614.       } {
  615.         menuitem {} {
  616.           label {No Effect}
  617.           xywh {35 35 100 20} labelfont 1 labelsize 11
  618.         }
  619.         menuitem {} {
  620.           label Reverb
  621.           xywh {45 45 100 20} labelfont 1 labelsize 11
  622.         }
  623.         menuitem {} {
  624.           label Echo
  625.           xywh {55 55 100 20} labelfont 1 labelsize 11
  626.         }
  627.         menuitem {} {
  628.           label Chorus
  629.           xywh {65 65 100 20} labelfont 1 labelsize 11
  630.         }
  631.         menuitem {} {
  632.           label Phaser
  633.           xywh {70 70 100 20} labelfont 1 labelsize 11
  634.         }
  635.         menuitem {} {
  636.           label AlienWah
  637.           xywh {80 80 100 20} labelfont 1 labelsize 11
  638.         }
  639.         menuitem {} {
  640.           label Distortion
  641.           xywh {90 90 100 20} labelfont 1 labelsize 11
  642.         }
  643.         menuitem {} {
  644.           label EQ
  645.           xywh {100 100 100 20} labelfont 1 labelsize 11
  646.         }
  647.         menuitem {} {
  648.           label DynFilter
  649.           xywh {110 110 100 20} labelfont 1 labelsize 11
  650.         }
  651.       }
  652.       Fl_Group inseffectuigroup {
  653.         xywh {5 5 380 100} box FLAT_BOX color 48
  654.       } {
  655.         Fl_Group inseffectui {
  656.           xywh {5 5 380 95}
  657.           code0 {o->init(part->partefx[ninseff]);}
  658.           class EffUI
  659.         } {}
  660.       }
  661.       Fl_Button {} {
  662.         label Close
  663.         callback {partfx->hide();}
  664.         xywh {325 115 60 20} box THIN_UP_BOX
  665.       }
  666.       Fl_Choice sendtochoice {
  667.         label {Send To.}
  668.         callback {int x=(int) o->value();
  669. part->Pefxroute[ninseff]=x;
  670. if (x==2) part->partefx[ninseff]->setdryonly(true);
  671.     else part->partefx[ninseff]->setdryonly(false);}
  672.         xywh {235 110 80 15} down_box BORDER_BOX labelsize 11 align 6
  673.         code0 {int x=part->Pefxroute[ninseff]; if (x==127) x=1;}
  674.         code1 {o->value(x);}
  675.       } {
  676.         menuitem {} {
  677.           label {Next Effect}
  678.           xywh {45 45 100 20} labelfont 1 labelsize 11
  679.         }
  680.         menuitem {} {
  681.           label {Part Out}
  682.           xywh {55 55 100 20} labelfont 1 labelsize 11
  683.         }
  684.         menuitem {} {
  685.           label {Dry Out}
  686.           xywh {65 65 100 20} labelfont 1 labelsize 11
  687.         }
  688.       }
  689.       Fl_Check_Button bypasseff {
  690.         label bypass
  691.         callback {part->Pefxbypass[ninseff]=(((int)o->value())!=0);}
  692.         tooltip {if the effect is not used (is bypassed)} xywh {90 110 60 15} down_box DOWN_BOX labelsize 12
  693.         code0 {int x=part->Pefxbypass[ninseff];o->value(x);}
  694.       }
  695.       Fl_Button {} {
  696.         label C
  697.         callback {presetsui->copy(part->partefx[ninseff]);}
  698.         xywh {90 127 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
  699.       }
  700.       Fl_Button {} {
  701.         label P
  702.         callback {pthread_mutex_lock(&master->mutex);
  703. presetsui->paste(part->partefx[ninseff],inseffectui);
  704. pthread_mutex_unlock(&master->mutex);}
  705.         xywh {120 127 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
  706.       }
  707.     }
  708.     Fl_Window instrumentkitlist {
  709.       label {Instrument Kit}
  710.       xywh {113 324 670 370} type Double hide
  711.     } {
  712.       Fl_Button {} {
  713.         label {Close Window}
  714.         callback {instrumentkitlist->hide();}
  715.         xywh {375 350 160 20} box THIN_UP_BOX
  716.       }
  717.       Fl_Scroll kitlist {
  718.         xywh {0 15 670 330} type VERTICAL box THIN_UP_BOX
  719.         code0 {if (part->Pkitmode==0) o->deactivate();}
  720.       } {
  721.         Fl_Pack {} {
  722.           xywh {0 20 670 320}
  723.           code0 {for (int i=0;i<NUM_KIT_ITEMS;i++){partkititem[i]=new PartKitItem(0,0,670,20,"");partkititem[i]->init(part,i,master,this);}}
  724.         } {}
  725.       }
  726.       Fl_Box {} {
  727.         label {No.}
  728.         xywh {5 0 25 15} labelfont 1 labelsize 12 align 18
  729.       }
  730.       Fl_Box {} {
  731.         label {M.}
  732.         xywh {55 0 25 15} labelfont 1 labelsize 12 align 18
  733.       }
  734.       Fl_Box {} {
  735.         label {Min.k}
  736.         xywh {235 0 40 15} labelfont 1 labelsize 12 align 18
  737.       }
  738.       Fl_Box {} {
  739.         label {Max.k}
  740.         xywh {345 0 40 15} labelfont 1 labelsize 12 align 18
  741.       }
  742.       Fl_Box {} {
  743.         label ADsynth
  744.         xywh {405 0 50 15} labelfont 1 labelsize 12 align 18
  745.       }
  746.       Fl_Box {} {
  747.         label SUBsynth
  748.         xywh {470 0 60 15} labelfont 1 labelsize 12 align 18
  749.       }
  750.       Fl_Choice {} {
  751.         label Mode
  752.         callback {part->Pkitmode=(int) o->value();
  753. if (part->Pkitmode==0) {
  754.      kitlist->deactivate();
  755.  } else {
  756.  kitlist->activate();
  757. };}
  758.         xywh {35 350 70 15} down_box BORDER_BOX labelsize 12 textfont 1 textsize 12
  759.         code0 {o->value(part->Pkitmode);}
  760.       } {
  761.         menuitem {} {
  762.           label OFF
  763.           xywh {0 0 100 20} labelfont 1 labelsize 12
  764.         }
  765.         menuitem {} {
  766.           label MULTI
  767.           xywh {10 10 100 20} labelfont 1 labelsize 12
  768.         }
  769.         menuitem {} {
  770.           label SINGLE
  771.           xywh {20 20 100 20} labelfont 1 labelsize 12
  772.         }
  773.       }
  774.       Fl_Check_Button {} {
  775.         label {Drum mode}
  776.         callback {part->Pdrummode=(int) o->value();}
  777.         xywh {285 350 70 15} down_box DOWN_BOX labelsize 11
  778.         code0 {o->value(part->Pdrummode);}
  779.       }
  780.       Fl_Box {} {
  781.         label {FX.r.}
  782.         xywh {620 0 30 15} labelfont 1 labelsize 12 align 18
  783.       }
  784.       Fl_Box {} {
  785.         label PADsynth
  786.         xywh {540 0 60 15} labelfont 1 labelsize 12 align 18
  787.       }
  788.     }
  789.     Fl_Window instrumenteditwindow {
  790.       label {Instrument Edit}
  791.       xywh {182 214 395 360} type Double hide
  792.     } {
  793.       Fl_Group {} {
  794.         xywh {0 220 395 110} box ENGRAVED_FRAME
  795.       } {
  796.         Fl_Group {} {
  797.           label PADsynth
  798.           xywh {205 245 100 80} box ENGRAVED_FRAME labelfont 1
  799.         } {
  800.           Fl_Button padeditbutton {
  801.             label Edit
  802.             callback {showparameters(0,2);}
  803.             xywh {215 280 80 35} box PLASTIC_UP_BOX color 222 selection_color 220 labelfont 1 labelsize 18 align 128
  804.             code0 {if (part->kit[0].Ppadenabled==0) o->deactivate();}
  805.           }
  806.           Fl_Check_Button padsynenabledcheck {
  807.             label Enabled
  808.             callback {int x=(int) o->value();
  809. part->kit[0].Ppadenabled=x;
  810. if (x==0) padeditbutton->deactivate();
  811.      else padeditbutton->activate();}
  812.             tooltip {enable/disable PADsynth} xywh {215 255 80 20} box PLASTIC_UP_BOX down_box DOWN_BOX color 222 selection_color 218 labelfont 1 labelsize 12
  813.             code1 {o->value(part->kit[0].Ppadenabled);}
  814.           }
  815.         }
  816.         Fl_Group {} {
  817.           label ADDsynth
  818.           xywh {5 245 100 80} box ENGRAVED_FRAME labelfont 1
  819.         } {
  820.           Fl_Check_Button adsynenabledcheck {
  821.             label Enabled
  822.             callback {int x=(int) o->value();
  823. part->kit[0].Padenabled=x;
  824. if (x==0) adeditbutton->deactivate();
  825.      else adeditbutton->activate();}
  826.             tooltip {enable/disable ADsynth} xywh {15 255 80 20} box PLASTIC_UP_BOX down_box DOWN_BOX color 222 selection_color 218 labelfont 1 labelsize 12
  827.             code1 {o->value(part->kit[0].Padenabled);}
  828.           }
  829.           Fl_Button adeditbutton {
  830.             label Edit
  831.             callback {showparameters(0,0);}
  832.             xywh {15 281 80 34} box PLASTIC_UP_BOX color 222 selection_color 220 labelfont 1 labelsize 18 align 128
  833.             code0 {if (part->kit[0].Padenabled==0) o->deactivate();}
  834.           }
  835.         }
  836.         Fl_Group {} {
  837.           label SUBsynth
  838.           xywh {105 245 100 80} box ENGRAVED_FRAME labelfont 1
  839.         } {
  840.           Fl_Check_Button subsynenabledcheck {
  841.             label Enabled
  842.             callback {int x=(int) o->value();
  843. part->kit[0].Psubenabled=x;
  844. if (x==0) subeditbutton->deactivate();
  845.      else subeditbutton->activate();}
  846.             tooltip {enable/disable SUBsynth} xywh {115 255 80 20} box PLASTIC_UP_BOX down_box DOWN_BOX color 222 selection_color 218 labelfont 1 labelsize 12
  847.             code1 {o->value(part->kit[0].Psubenabled);}
  848.           }
  849.           Fl_Button subeditbutton {
  850.             label Edit
  851.             callback {showparameters(0,1);}
  852.             xywh {115 280 80 35} box PLASTIC_UP_BOX color 222 selection_color 220 labelfont 1 labelsize 18 align 128
  853.             code0 {if (part->kit[0].Psubenabled==0) o->deactivate();}
  854.           }
  855.         }
  856.         Fl_Button {} {
  857.           label {Kit Edit}
  858.           callback {instrumentkitlist->show();}
  859.           xywh {310 245 80 35} box PLASTIC_UP_BOX color 238 selection_color 220 labelfont 1 align 128
  860.         }
  861.         Fl_Button {} {
  862.           label Effects
  863.           callback {partfx->show();}
  864.           xywh {310 290 80 35} box PLASTIC_UP_BOX color 230 labelfont 1 labelsize 16
  865.         }
  866.       }
  867.       Fl_Group {} {
  868.         xywh {0 5 395 215} box ENGRAVED_FRAME
  869.       } {
  870.         Fl_Input {} {
  871.           label {Author and Copyright}
  872.           callback {snprintf((char *)part->info.Pauthor,MAX_INFO_TEXT_SIZE,"%s",o->value());}
  873.           xywh {5 60 385 50} type Multiline color 26 labelsize 10 align 5
  874.           code0 {o->maximum_size(MAX_INFO_TEXT_SIZE);}
  875.           code1 {o->value((char *) &part->info.Pauthor);}
  876.         }
  877.         Fl_Input {} {
  878.           label Comments
  879.           callback {snprintf((char *)part->info.Pcomments,MAX_INFO_TEXT_SIZE,"%s",o->value());}
  880.           xywh {5 125 385 90} type Multiline color 26 labelsize 12 align 5
  881.           code0 {o->maximum_size(MAX_INFO_TEXT_SIZE);}
  882.           code1 {o->value((char *) &part->info.Pcomments);}
  883.         }
  884.         Fl_Choice {} {
  885.           label {Type:}
  886.           callback {part->info.Ptype=o->value();}
  887.           xywh {5 25 155 20} down_box BORDER_BOX labelfont 1 labelsize 12 align 5 textsize 11
  888.           code0 {o->value(part->info.Ptype);}
  889.         } {
  890.           menuitem {} {
  891.             label {--------------------------}
  892.             xywh {20 20 100 20} labelfont 1 labelsize 12
  893.           }
  894.           menuitem {} {
  895.             label Piano
  896.             xywh {10 10 100 20} labelfont 1 labelsize 12
  897.           }
  898.           menuitem {} {
  899.             label {Chromatic Percussion}
  900.             xywh {20 20 100 20} labelfont 1 labelsize 12
  901.           }
  902.           menuitem {} {
  903.             label Organ
  904.             xywh {30 30 100 20} labelfont 1 labelsize 12
  905.           }
  906.           menuitem {} {
  907.             label Guitar
  908.             xywh {40 40 100 20} labelfont 1 labelsize 12
  909.           }
  910.           menuitem {} {
  911.             label Bass
  912.             xywh {50 50 100 20} labelfont 1 labelsize 12
  913.           }
  914.           menuitem {} {
  915.             label {Solo Strings}
  916.             xywh {60 60 100 20} labelfont 1 labelsize 12
  917.           }
  918.           menuitem {} {
  919.             label Ensemble
  920.             xywh {70 70 100 20} labelfont 1 labelsize 12
  921.           }
  922.           menuitem {} {
  923.             label Brass
  924.             xywh {80 80 100 20} labelfont 1 labelsize 12
  925.           }
  926.           menuitem {} {
  927.             label Reed
  928.             xywh {90 90 100 20} labelfont 1 labelsize 12
  929.           }
  930.           menuitem {} {
  931.             label Pipe
  932.             xywh {100 100 100 20} labelfont 1 labelsize 12
  933.           }
  934.           menuitem {} {
  935.             label {Synth Lead}
  936.             xywh {110 110 100 20} labelfont 1 labelsize 12
  937.           }
  938.           menuitem {} {
  939.             label {Synth Pad}
  940.             xywh {120 120 100 20} labelfont 1 labelsize 12
  941.           }
  942.           menuitem {} {
  943.             label {Synth Effects}
  944.             xywh {130 130 100 20} labelfont 1 labelsize 12
  945.           }
  946.           menuitem {} {
  947.             label Ethnic
  948.             xywh {140 140 100 20} labelfont 1 labelsize 12
  949.           }
  950.           menuitem {} {
  951.             label Percussive
  952.             xywh {150 150 100 20} labelfont 1 labelsize 12
  953.           }
  954.           menuitem {} {
  955.             label {Sound Effects}
  956.             xywh {160 160 100 20} labelfont 1 labelsize 12
  957.           }
  958.         }
  959.       }
  960.       Fl_Button {} {
  961.         label Close
  962.         callback {instrumenteditwindow->hide();}
  963.         xywh {150 335 95 25} box THIN_UP_BOX
  964.       }
  965.     }
  966.   }
  967.   Function {PartUI(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
  968.     code {part=NULL;
  969. adnoteui=NULL;
  970. subnoteui=NULL;
  971. padnoteui=NULL;
  972. lastkititem=-1;} {}
  973.   }
  974.   Function {init(Part *part_,Master *master_,int npart_,BankUI *bankui_)} {} {
  975.     code {bankui=bankui_;
  976. part=part_;
  977. npart=npart_;
  978. master=master_;
  979. ninseff=0;
  980.  
  981. make_window();
  982. partgroup->position(this->parent()->x()+2,this->parent()->y()+2);
  983. partgroup->show();
  984. end();
  985.  
  986.  
  987. //if (config.ui.showinstrumentinfo!=0) instrumenteditwindow->show();
  988.  
  989. int klimits[]={1,2,3,4,5,6,7,8,9,10,15,20,30,50,100,0};
  990.  
  991. keylimitlist->add("OFF");
  992. int k=0;
  993. int val=-1;
  994. char tmp[10];
  995. while (klimits[k]!=0){
  996.     sprintf(tmp,"%d",klimits[k]);
  997.     keylimitlist->add(tmp);
  998.     if ((val==-1)){
  999.         if (klimits[k]>part->Pkeylimit) val=k;
  1000.     };
  1001.     k++;
  1002. };
  1003.  
  1004. if (val==-1) val=k;
  1005. keylimitlist->value(val);} {}
  1006.   }
  1007.   Function {showparameters(int kititem,int engine)} {} {
  1008.     code {if (engine==-1){//this is used if I want to clear the engine from the part
  1009.    if (kititem==lastkititem) kititem=-1;
  1010.          else kititem=lastkititem;
  1011. };
  1012.  
  1013. if (kititem!=lastkititem){
  1014.     if (adnoteui!=NULL) delete (adnoteui);
  1015.     if (subnoteui!=NULL) delete (subnoteui);   
  1016.     if (padnoteui!=NULL) delete (padnoteui);
  1017.     adnoteui=NULL;subnoteui=NULL;padnoteui=NULL;
  1018.     lastkititem=kititem;
  1019.  
  1020.     if (kititem>=NUM_KIT_ITEMS) return;//bad kit item
  1021.     if (kititem<0) return;
  1022.  
  1023.     if (part->kit[kititem].adpars!=NULL) 
  1024.       adnoteui=new ADnoteUI(part->kit[kititem].adpars,master);
  1025.  
  1026.     if (part->kit[kititem].subpars!=NULL) 
  1027.        subnoteui=new SUBnoteUI(part->kit[kititem].subpars);
  1028.  
  1029.     if (part->kit[kititem].padpars!=NULL) 
  1030.       padnoteui=new PADnoteUI(part->kit[kititem].padpars,master);
  1031.  
  1032. };
  1033.  
  1034.  
  1035.  
  1036. if ((engine==0)&&(adnoteui!=NULL)) adnoteui->ADnoteGlobalParameters->show();
  1037. if ((engine==1)&&(subnoteui!=NULL)) subnoteui->SUBparameters->show();
  1038. if ((engine==2)&&(adnoteui!=NULL)) padnoteui->padnotewindow->show();} {}
  1039.   }
  1040.   Function {~PartUI()} {} {
  1041.     code {if (adnoteui!=NULL) delete (adnoteui);
  1042. if (subnoteui!=NULL) delete (subnoteui);
  1043. if (padnoteui!=NULL) delete (padnoteui);
  1044.  
  1045. partgroup->hide();
  1046. //delete(partgroup);
  1047.  
  1048. ctlwindow->hide();
  1049. delete(ctlwindow);
  1050.  
  1051. partfx->hide();
  1052. delete(partfx);
  1053.  
  1054. instrumentkitlist->hide();
  1055. delete(instrumentkitlist);
  1056.  
  1057. instrumenteditwindow->hide();
  1058. delete(instrumenteditwindow);} {}
  1059.   }
  1060.   decl {Part *part;} {}
  1061.   decl {Master *master;} {}
  1062.   decl {BankUI *bankui;} {}
  1063.   decl {ADnoteUI *adnoteui;} {}
  1064.   decl {SUBnoteUI *subnoteui;} {}
  1065.   decl {PADnoteUI *padnoteui;} {}
  1066.   decl {PartSysEffSend *psyef[NUM_SYS_EFX];} {}
  1067.   decl {int npart;} {}
  1068.   decl {int ninseff;} {}
  1069.   decl {int lastkititem;} {}
  1070.   decl {PartKitItem *partkititem[NUM_KIT_ITEMS];} {}
  1071.